package com.niu.context;

/**
 * 线程上下文工具类
 * <p>
 * 作用：安全保存当前线程相关的用户ID，提供统一访问入口获取用户信息，
 * 避免参数层层传递，提升开发效率。
 * </p>
 */
public class BaseContext {

    /**
     * 使用 ThreadLocal 存储当前线程的用户ID
     * <p>
     * 特性：保证线程间数据隔离，避免多线程环境下的数据污染。
     * </p>
     */
    public static ThreadLocal<Long> threadLocal = new ThreadLocal<>();

    /**
     * 设置当前线程的用户ID
     *
     * @param id 用户ID
     */
    public static void setCurrentId(Long id) {
        threadLocal.set(id);
    }

    /**
     * 获取当前线程的用户ID
     *
     * @return 当前线程绑定的用户ID
     */
    public static Long getCurrentId() {
        return threadLocal.get();
    }

    /**
     * 清理当前线程绑定的用户ID
     * <p>
     * 注意事项：请求结束时务必调用此方法清理数据，防止内存泄漏。
     * </p>
     */
    public static void removeCurrentId() {
        threadLocal.remove();
    }

}